package com.lp.biz.operations.service;

import com.lp.biz.operations.model.query.HomeRecommendQuery;
import com.lp.biz.operations.model.query.RecommendContentQuery;
import com.lp.biz.operations.model.vo.HomeRecommendItemAddVo;
import com.lp.biz.operations.model.vo.HomeRecommendSetting;
import com.lp.biz.operations.model.vo.HomeRecommendVo;
import com.lp.biz.operations.model.vo.RecommendSort;
import com.lp.common.entity.PageParams;
import com.lp.common.utils.CommonResult;

/**
 * @program: backend
 * @description:
 * @author: Ke.Song
 * @since: 2024-07-13 1:02:53
 */
public interface RecommendService {

    /**
     * 获取首页推荐位
     * @param query 查询参数
     * @return 查询结果
     */
    CommonResult getHomeRecommend(HomeRecommendQuery query);

    /**
     * 首页推荐位排序
     * @param recommendSort 排序参数
     */
    void updateSort(RecommendSort recommendSort);

    /**
     * 更新推荐位状态
     * @param recommendId 推荐位id
     */
    void updateRecommendStatus(Integer recommendId);

    /**
     * 删除推荐位
     * @param recommendId 推荐位id
     */
    void deleteRecommend(Integer recommendId);

    /**
     * 创建/更新推荐位
     * @param params 推荐位参数
     */
    void addOrUpdateRecommend(HomeRecommendVo params);

    /**
     * 获取首页推荐位详情
     * @param recommendId 推荐位id
     * @return 查询结果
     */
    CommonResult getRecommend(Integer recommendId);

    /**
     * 获取首页推荐位明细列表
     *
     * @param recommendId 首页推荐位id
     * @param query 分页
     * @return 查询结果
     */
    CommonResult getRecommendItems(Integer recommendId, PageParams query);

    /**
     * 更新首页推荐位设置
     * @param recommendId 推荐位id
     * @param setting 设置参数
     */
    void updateRecommendSetting(Integer recommendId, HomeRecommendSetting setting);

    /**
     * 获取内容库
     * @param query 查询参数
     * @return 查询结果
     */
    CommonResult getRecommendContentList(RecommendContentQuery query);

    /**
     * 获取内容库
     * @param query 查询参数
     * @return 查询结果
     */
    CommonResult getRecommendTextList(RecommendContentQuery query);

    /**
     * 添加首页推荐位明细 - 共读会/故事/训练营
     * @param vo 添加参数
     */
    void addRecommendItem(HomeRecommendItemAddVo vo);

    /**
     * 添加首页推荐位明细 - 名人名言
     * @param vo 添加参数
     */
    void addRecommendTextItem(HomeRecommendItemAddVo vo);

    /**
     * 删除推荐位明细
     * @param itemId 明细id
     */
    void deleteRecommendItem(Integer itemId);
}
